/* -*-jde-*- */
package app.alumnoe.cv;

import app.alumnoe.cv.beans.Idioma;
import app.conexion.Conexion;
import app.conexion.ConexionException;
import app.util.appException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Bean Idiomas Cada uno de los idiomas para un cv
 *
 * @author Victor Miguel Peralta Santa Anna
 * @since Diciembre 2011
 * @version 0.1
 */
public class Idiomas {

    private LinkedList<Idioma> idiomas = new LinkedList<Idioma>();

    /**
     * Se obliga el uso a métodos estáticos.
     */
    public Idiomas(int nIdCV) throws appException {
        getIdiomasBase(nIdCV);
    }

    /**
     * Método que inicializa la lista con los correos existentes en la base de
     * datos para un usuario
     *
     * @throws appException
     */
    public void getIdiomasBase(int nIdCV) throws appException {
        try {

            Conexion con = new Conexion();
            String query = "select * from idiomas where nidcv = " + nIdCV + ";";

            ResultSet r = con.exec(query);


            while (r.next()) {
                int idi = r.getInt("nididioma");
                int idc = r.getInt("nidcv");
                String sid = r.getString("sidioma");
                boolean bcom = r.getBoolean("bComprensionLectura");
                String sni = r.getString("snivel");
                String sin = r.getString("sinstitucioneducativa");
                idiomas.add(new Idioma(idi, idc, sid, bcom, sni, sin));
            }

            con.close();
        } catch (SQLException ex) {
            System.err.println(ex);
            Logger.getLogger(Idiomas.class.getName()).log(Level.SEVERE, null, ex);
            throw new appException("No se pueden recuperar los idiomas de la base de datos");
        } catch (ConexionException ex) {
            System.err.println(ex);
            Logger.getLogger(Idiomas.class.getName()).log(Level.SEVERE, null, ex);
            throw new appException("No se pueden recuperar los idiomas de la base de datos");
        }

    }

    /**
     * Regresamos la lista de idiomas que tiene el CV nIdCV
     *
     * @return La lista de idiomas
     */
    public LinkedList<Idioma> getIdiomas() {
        return idiomas;
    }

    /**
     * Salvamos la lista de todos los idiomas para este CV
     *
     * @throws appException
     */
    public void saveAll() throws appException {
        for (Idioma m : idiomas) {
            m.save();
        }
    }

    /**
     * Conexiones de prueba a la base de datos
     *
     * @param args
     * @throws ConexionException
     * @throws SQLException
     * @throws appException
     */
    public static void main(String args[]) throws ConexionException, SQLException, appException {


        Idiomas id = new Idiomas(1);

        LinkedList<Idioma> idiomas = id.getIdiomas();


        System.out.println(idiomas);

    }
}
